package org.groupg.demo.eclipse;

import org.eclipse.collections.api.list.MutableList;
import org.eclipse.collections.impl.factory.Lists;

/**
 * 线程不安全集合示例
 * <p>
 * 特点：
 * 1. 多线程并发修改时会出现数据不一致
 * 2. 可能产生的问题：元素丢失、大小计算错误、空指针异常等
 * 3. 适合单线程环境或只读操作
 * 4. 性能最高（无同步开销）
 */
public class ThreadUnsafeExample {
    // 共享的可变集合（无任何线程安全措施）
    private static final MutableList<Integer> sharedList = Lists.mutable.empty();

    public static void main(String[] args) throws InterruptedException {
        // 定义添加元素的任务
        Runnable task = () -> {
            for (int i = 0; i < 1000; i++) {
                // 非线程安全操作：多个线程同时修改内部结构
                sharedList.add(i);
            }
        };

        // 创建两个线程同时执行添加操作
        Thread t1 = new Thread(task);
        Thread t2 = new Thread(task);

        t1.start();
        t2.start();
        t1.join(); // 等待线程结束
        t2.join();

        // 预期结果应为2000，但实际会小于2000（部分添加操作丢失）
        System.out.println("线程不安全List大小: " + sharedList.size() + " | 预期值: 2000");
        System.out.println("注意: 实际大小通常小于2000，证明存在并发问题");
    }
}
